/**
 * N个人每个人有质量和速度。一个人可以背另一个人，记作a背b。
 * 如果a的体重>=b体重，则背人后a速度仍然位置原值
 * 否则，a的速度降为 原速度 - (b体重 - a体重)
 * 问如何安排，使得N个人的最低速度最大
 * 显然二分，对某个速度v，看能否让所有人都达到这个速度
 * 每一次以mid为界限，将人分成两组：能背人的与需要被背的
 * 再然后能背人的按照 `体重+速度` 从大到小排序，如此一来如果前面的人背不了则后面的人肯定也不行
 * 需要被背的按照 `体重` 从大到小排序，表示越靠前的人越难处理
 * 然后两个数组直接逐个验证即可
 */
#include <bits/stdc++.h>
using namespace std;

#include <bits/extc++.h>
using namespace __gnu_pbds;

using Real = double;
using llt = long long;
using pii = pair<int, int>;
using vi = vector<int>;

int N;
vector<pii> A;

bool check(int v){
    vi can; can.reserve(N);
    vi bei; bei.reserve(N);
    for(int i=0;i<N;++i){
        if(A[i].first >= v) can.emplace_back(i);
        else bei.emplace_back(i);
    }

    int cn = can.size(), bn = bei.size();
    if(cn < bn) return false;
    if(0 == bn) return true;

    sort(can.begin(), can.end(), [&](int u, int v){
        auto tu = A[u].first + A[u].second;
        auto tv = A[v].first + A[v].second;
        if(tu != tv) return tu > tv;
        if(A[u].first != A[v].first) return A[u].first > A[v].first;
        return A[u].second > A[v].second;
    });
    sort(bei.begin(), bei.end(), [&](int u, int v){
        if(A[u].second != A[v].second) return A[u].second > A[v].second;
        return A[u].first > A[v].first;
    });

    for(int i=0;i<bn;++i){
        if(A[can[i]].second >= A[bei[i]].second or (A[can[i]].first + A[can[i]].second >= A[bei[i]].second + v)){
            ;
        }else{
            return false;
        }
    }
    return true;
}

int proc(){
    int left = 1, right = 1000000000, mid;
    do{
        mid = (left + right) >> 1;
        if(check(mid)) left = mid + 1;
        else right = mid - 1;
    }while(left <= right);
    return right;
}

int main(){
#ifndef ONLINE_JUDGE
    freopen("z.txt", "r", stdin);
#endif
    ios::sync_with_stdio(false);cin.tie(nullptr);cout.tie(0);
    int nofakse = 1;
    cin >> nofakse;
    while(nofakse--){
        cin >> N;
        A.assign(N, {});
        for(auto & p : A) cin >> p.first >> p.second;
        cout << proc() << "\n";
    }
    return 0;
}